home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / PROGBLER / ASMCODE2.LZH / CIRCLE_3.ASM < prev    next >
Assembly Source File  |  1983-07-27  |  2KB  |  43 lines

  1. TITLE CALLER - CALLS CIRCLE SUBROUTINE
  2. EXTRN CIRCLE:FAR;external subroutine
  3.  
  4. STACK    SEGMENT PARA STACK 'STACK'
  5.          DB   64 DUP('STACK   ')
  6. STACK    ENDS
  7. CALLER   SEGMENT PARA 'CODE'
  8. START    PROC FAR
  9.          ASSUME CS:CALLER,SS:STACK
  10. X_COORD  DW   50        ;INITIAL VALUE X OF CENTER
  11. Y_COORD  DW   50        ;INITIAL VALUE Y OF CENTER
  12.          PUSH DS        ;save ret seg on stack
  13.          XOR  AX,AX     ;zero for ret offset
  14.          PUSH AX        ;and save on stack
  15.          MOV  AL,4      ;color/graphics select
  16.          INT  10H       ;set mode
  17. LOOP_CIR: MOV  AX,X_COORD ;X CURRENT COORD
  18.          PUSH AX        ;save on stack
  19.          MOV  AX,Y_COORD  ;Y CURRENT COORD
  20.          PUSH AX        ;save on stack
  21.          MOV  AX,30     ;circle radius
  22.          PUSH AX        ;save on stack
  23.          MOV  AX,5      ;aspect numer
  24.          PUSH AX        ;save on stack
  25.          MOV  AX,6      ;aspec denom
  26.          PUSH AX        ;save on stack
  27.          MOV  AX,1      ;foregrnd color 
  28.          PUSH AX        ;save on stack  
  29.          CALL CIRCLE    ;draw circle 
  30.          ADC  X_COORD,2    ;INCREASE X BY 2       
  31.          CMP  X_COORD,200  ;END VALUE
  32.          JA  EXIT_POINT    ;END OF PROGRAM 
  33.          CMP  X_COORD,120  ;TURNING POINT
  34.          JA  TURN_POINT
  35.          ADC  Y_COORD,2    ;INCREASE Y BY 1
  36.          JMP LOOP_CIR      ;DO ANOTHER CIRCLE
  37. TURN_POINT: ADC Y_COORD,-2 ;DECREASE Y BY 1
  38.          JMP LOOP_CIR      ;DO ANOTHER CIRCLE
  39. EXIT_POINT:  RET        ;far ret to DOS  
  40. START    ENDP 
  41. CALLER   ENDS 
  42.          END 
  43.